From 65ce9b4817544734770e410c5c2779065152f991 Mon Sep 17 00:00:00 2001
From: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
Date: Thu, 4 Jan 2018 09:47:45 +0100
Subject: [PATCH] autoconf: use PKG_CHECK_MODULES for libmount and libblkid

The dependencies of libmount to libblkid and libblkid to libuuid
were not handled correctly, and only work for the shared object scenario.
This commit switches the autoconfiguration to use PKG_CHECK_MODULES
which handles the static vs. dynamic case.
This commit has been compile-tested using buildroot on different compilers,
including static & dynamic ones

Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
---
 configure.ac                 | 13 +++----------
 sbin/mkfs/Makefile.am        |  4 ++--
 sbin/mkfs/mkfs.c             |  6 +++---
 sbin/mount/Makefile.am       |  4 ++--
 sbin/mount/mount_libmount.c  |  4 +---
 sbin/mount/umount_libmount.c |  4 +---
 6 files changed, 12 insertions(+), 23 deletions(-)

diff --git a/configure.ac b/configure.ac
index 6fa8c41..3e31e55 100644
--- a/configure.ac
+++ b/configure.ac
@@ -104,13 +104,10 @@ AC_CHECK_HEADERS([ctype.h err.h fcntl.h grp.h libintl.h limits.h \
 
 # Check for conditional libraries and headers.
 if test "${with_libmount}" = "yes"; then
-   AC_CHECK_LIB(mount, mnt_context_do_mount, [LIB_MOUNT="-lmount"],
-   	AC_MSG_ERROR([Mount library is enabled but libmount not found]))
-   AC_CHECK_HEADERS([libmount/libmount.h])
+   PKG_CHECK_MODULES([MOUNT], [mount])
    with_selinux=no
 fi
 AM_CONDITIONAL(CONFIG_LIBMOUNT, [test "$with_libmount" = "yes"])
-AC_SUBST(LIB_MOUNT)
 
 if test "${with_selinux}" = "yes"; then
    AC_CHECK_LIB(selinux, getprevcon,
@@ -125,15 +122,11 @@ fi
 AC_SUBST([LIB_SELINUX])
 
 if test "${with_blkid}" = "yes"; then
-   AC_CHECK_LIB(blkid, blkid_new_probe_from_filename,
+   PKG_CHECK_MODULES([BLKID], [blkid],
    		[AC_DEFINE(HAVE_LIBBLKID, 1,
 		    [Define to 1 if you have the 'blkid' library (-lblkid).])
-		 LIB_BLKID="-lblkid"
-		],
-		AC_MSG_ERROR([BLKID library not found]))
-   AC_CHECK_HEADERS([blkid/blkid.h])
+		])
 fi
-AC_SUBST(LIB_BLKID)
 
 # Checks for typedefs, structures, and compiler characteristics.
 AC_C_CONST
diff --git a/sbin/mkfs/Makefile.am b/sbin/mkfs/Makefile.am
index 28f5128..408c976 100644
--- a/sbin/mkfs/Makefile.am
+++ b/sbin/mkfs/Makefile.am
@@ -1,8 +1,8 @@
 ## Makefile.am
 
-AM_CFLAGS = -Wall
+AM_CFLAGS = -Wall $(BLKID_CFLAGS)
 AM_CPPFLAGS = -I$(top_srcdir)/include
-LDADD = -luuid $(LIB_BLKID) $(top_builddir)/lib/libnilfsfeature.la \
+LDADD = -luuid $(BLKID_LIBS) $(top_builddir)/lib/libnilfsfeature.la \
 	$(top_builddir)/lib/libmountchk.la \
 	$(top_builddir)/lib/libcrc32.la
 
diff --git a/sbin/mkfs/mkfs.c b/sbin/mkfs/mkfs.c
index d7f161e..0c45d6a 100644
--- a/sbin/mkfs/mkfs.c
+++ b/sbin/mkfs/mkfs.c
@@ -66,9 +66,9 @@
 
 #include <errno.h>
 
-#if HAVE_BLKID_BLKID_H
-#include <blkid/blkid.h>
-#endif	/* HAVE_BLKID_BLKID_H */
+#if HAVE_LIBBLKID
+#include <blkid.h>
+#endif	/* HAVE_LIBBLKID */
 
 #include "nilfs.h"
 #include "util.h"
diff --git a/sbin/mount/Makefile.am b/sbin/mount/Makefile.am
index f5d3c27..9554aa5 100644
--- a/sbin/mount/Makefile.am
+++ b/sbin/mount/Makefile.am
@@ -6,10 +6,10 @@ COMMONHEADERS = mount.nilfs2.h sundries.h xmalloc.h
 LEGACYSOURCES = fstab.c mount_mntent.c mount_opts.c
 LEGACYHEADERS = fstab.h mount_constants.h mount_mntent.h mount_opts.h
 
-AM_CFLAGS = -Wall
+AM_CFLAGS = -Wall $(MOUNT_CFLAGS)
 AM_CPPFLAGS = -I$(top_srcdir)/include
 LDADD = $(top_builddir)/lib/librealpath.la \
-	$(top_builddir)/lib/libcleanerexec.la $(LIB_MOUNT) $(LIB_SELINUX) \
+	$(top_builddir)/lib/libcleanerexec.la $(MOUNT_LIBS) $(LIB_SELINUX) \
 	$(LIB_POSIX_TIMER)
 
 root_sbin_PROGRAMS = mount.nilfs2 umount.nilfs2
diff --git a/sbin/mount/mount_libmount.c b/sbin/mount/mount_libmount.c
index ef40e68..a7fec00 100644
--- a/sbin/mount/mount_libmount.c
+++ b/sbin/mount/mount_libmount.c
@@ -67,9 +67,7 @@
 #include <syslog.h>
 #endif	/* HAVE_SYSLOG_H */
 
-#if HAVE_LIBMOUNT_LIBMOUNT_H
-#include <libmount/libmount.h>
-#endif	/* HAVE_LIBMOUNT_H */
+#include <libmount.h>
 
 #include <stdarg.h>
 #include <errno.h>
diff --git a/sbin/mount/umount_libmount.c b/sbin/mount/umount_libmount.c
index ae5a337..b678f54 100644
--- a/sbin/mount/umount_libmount.c
+++ b/sbin/mount/umount_libmount.c
@@ -59,9 +59,7 @@
 #include <syslog.h>
 #endif	/* HAVE_SYSLOG_H */
 
-#if HAVE_LIBMOUNT_LIBMOUNT_H
-#include <libmount/libmount.h>
-#endif	/* HAVE_LIBMOUNT_H */
+#include <libmount.h>
 
 #include <stdarg.h>
 #include <errno.h>
-- 
1.8.5.rc3

